package com.ruoyi.course.domain;

import java.math.BigDecimal;
import java.util.Date;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 课程信息对象 course
 *
 * @author chenxl
 * @date 2025-04-07
 */
public class Course extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private String id;

    /** 开课状态（对应若依字典：course_status_type） */
    @Excel(name = "开课状态")
    private Long status;

    /** 课程编号（唯一索引） */
    @Excel(name = "课程代码")
    private String courseCode;

    /** 课程名称 */
    @Excel(name = "课程名称")
    private String courseName;

    /** 课程英文名称 */
    @Excel(name = "课程英文名称")
    private String courseNameEn;

    /** 课程简称 */
    @Excel(name = "课程简称")
    private String courseShortName;

    /** 课程名拼音简写 */
    @Excel(name = "课程拼音简写")
    private String coursePinyin;

    /** 开课院校 */
    @Excel(name = "开课院系代码")
    private String collegeId;

    /** 开课院系代码 */
    @Excel(name = "开课院系代码_显示值")
    private String departmentId;

    /** 适用院系（多个用逗号分隔） */
    @Excel(name = "适用院系")
    private String applicableDepartments;

    /** 课程学分，支持小数，如 3.5 学分 */
    @Excel(name = "课程学分")
    private BigDecimal credits;

    /** 总学时 */
    @Excel(name = "总学时")
    private Long totalHours;

    /** 课堂学时 */
    @Excel(name = "课堂学时")
    private Long classroomHours;

    /** 实验学时 */
    @Excel(name = "实验学时")
    private Long labHours;

    /** 自学学时 */
    @Excel(name = "自学学时")
    private Long selfStudyHours;

    /** 每周课时 */
    @Excel(name = "每周课时")
    private Long weeklyHours;

    /** 开课学期（对应若依字典：semester_type） */
    @Excel(name = "开课季节")
    private Long semester;

    /** 开课季节（对应字典：term_season_type） */
    //@Excel(name = "开课季节")
    private Long termSeason;

    /** 是否跨学期（0-否，1-是） */
    @Excel(name = "是否跨学期")
    private Integer isCrossSemester;

    /** 开课学期数 */
    @Excel(name = "开课学期数")
    private Long crossSemesterCount;

    /** 前修课程（多个用逗号分隔） */
    @Excel(name = "前修课程")
    private String prerequisiteCourses;

    /** 教室类型码（对应字典：classroom_type_type） */
    @Excel(name = "教室类型码")
    private Long classroomType;

    /** 参考文献 */
    @Excel(name = "参考文献")
    private String references;

    /** 课程简介 */
    @Excel(name = "课程简介")
    private String courseIntroduction;

    /** 授课语言（对应字典：language_type，默认1-中文） */
    @Excel(name = "授课语言")
    private Long teachingLanguage;

    /** 课程英文简介 */
    @Excel(name = "课程英文简介")
    private String courseIntroductionEn;

    /** 课程层次代码（对应字典：course_level_type） */
    @Excel(name = "课程层次代码")
    private Long courseLevel;

    /** 课程类型（对应若依字典：course_type_type） */
    @Excel(name = "课程性质")
    private Long courseType;

    /** 课程性质（对应若依字典：course_nature_type） */
    @Excel(name = "课程性质")
    private Long courseNature;

    /** 成绩等级类型（对应字典：grade_type_type） */
    @Excel(name = "成绩等级类型")
    private Long gradeType;

    /** 课程分类（对应字典：course_classification_type） */
    @Excel(name = "课程分类")
    private Long courseClassification;

    /** 课程分类1（对应字典：course_classification1_type） */
    @Excel(name = "课程分类1")
    private Long courseClassification1;

    /** 课程分类2（对应字典：course_classification2_type） */
    @Excel(name = "课程分类2")
    private Long courseClassification2;

    /** 上课方式（对应字典：teaching_method_type） */
    @Excel(name = "上课方式")
    private Long teachingMethod;

    /** 考试方式（对应字典：examination_method_type） */
    @Excel(name = "考试方式")
    private Long examinationMethod;

    /** 建立时间 */
    @Excel(name = "建立时间")
    private Date createTime;

    /** 审核状态（对应若依字典：approver_status_type） */
    @Excel(name = "审核状态")
    private Long approverStatus;

    /** 备注 */
    @Excel(name = "备注")
    private String remark;

    /** 课程类别码（对应字典：course_category_type） */
    @Excel(name = "课程类别码")
    private Long courseCategory;

    /** 专业代码 */
    @Excel(name = "专业代码")
    private String majorCode;

    /** 主讲教师1ID */
    @Excel(name = "主讲教师1")
    private String teacher1Id;

    /** 主讲教师2ID */
    @Excel(name = "主讲教师2")
    private String teacher2Id;

    /** 主讲教师姓名1 */
    @Excel(name = "主讲教师姓名1")
    private String teacher1Name;

    /** 主讲教师姓名2 */
    @Excel(name = "主讲教师姓名2")
    private String teacher2Name;

    /** 适用教材 */
    @Excel(name = "适用教材")
    private String textbook;

    /** 参考书目 */
    @Excel(name = "参考书目")
    private String referenceBooks;

    /** 教学安排 */
    @Excel(name = "教学安排")
    private String teachingArrangement;

    /** 课程大纲 */
    @Excel(name = "课程大纲")
    private String courseOutline;

    /** 适用专业（多个用逗号分隔） */
    @Excel(name = "适用专业")
    private String applicableMajors;

    /** 扩展字段1 */
    @Excel(name = "EXTFIELD1")
    private String extField1;

    /** 扩展字段2 */
    @Excel(name = "EXTFIELD2")
    private String extField2;

    /** 扩展字段3 */
    @Excel(name = "EXTFIELD3")
    private String extField3;

    /** 扩展字段4 */
    @Excel(name = "EXTFIELD4")
    private String extField4;

    /** 扩展字段5 */
    @Excel(name = "EXTFIELD5")
    private String extField5;

    /** 成绩是否固定（对应若依字典：score_fixed_type） */
    @Excel(name = "成绩类型是否固定")
    private Integer isScoreFixed;

    public void setId(String id)
    {
        this.id = id;
    }

    public String getId()
    {
        return id;
    }

    public void setCourseCode(String courseCode)
    {
        this.courseCode = courseCode;
    }

    public String getCourseCode()
    {
        return courseCode;
    }

    public void setCourseName(String courseName)
    {
        this.courseName = courseName;
    }

    public String getCourseName()
    {
        return courseName;
    }

    public void setCourseShortName(String courseShortName)
    {
        this.courseShortName = courseShortName;
    }

    public String getCourseShortName()
    {
        return courseShortName;
    }

    public void setCoursePinyin(String coursePinyin)
    {
        this.coursePinyin = coursePinyin;
    }

    public String getCoursePinyin()
    {
        return coursePinyin;
    }

    public void setCourseNameEn(String courseNameEn)
    {
        this.courseNameEn = courseNameEn;
    }

    public String getCourseNameEn()
    {
        return courseNameEn;
    }

    public void setCollegeId(String collegeId)
    {
        this.collegeId = collegeId;
    }

    public String getCollegeId()
    {
        return collegeId;
    }

    public void setDepartmentId(String departmentId)
    {
        this.departmentId = departmentId;
    }

    public String getDepartmentId()
    {
        return departmentId;
    }

    public void setApplicableDepartments(String applicableDepartments)
    {
        this.applicableDepartments = applicableDepartments;
    }

    public String getApplicableDepartments()
    {
        return applicableDepartments;
    }

    public void setCredits(BigDecimal credits)
    {
        this.credits = credits;
    }

    public BigDecimal getCredits()
    {
        return credits;
    }

    public void setTotalHours(Long totalHours)
    {
        this.totalHours = totalHours;
    }

    public Long getTotalHours()
    {
        return totalHours;
    }

    public void setClassroomHours(Long classroomHours)
    {
        this.classroomHours = classroomHours;
    }

    public Long getClassroomHours()
    {
        return classroomHours;
    }

    public void setLabHours(Long labHours)
    {
        this.labHours = labHours;
    }

    public Long getLabHours()
    {
        return labHours;
    }

    public void setSelfStudyHours(Long selfStudyHours)
    {
        this.selfStudyHours = selfStudyHours;
    }

    public Long getSelfStudyHours()
    {
        return selfStudyHours;
    }

    public void setWeeklyHours(Long weeklyHours)
    {
        this.weeklyHours = weeklyHours;
    }

    public Long getWeeklyHours()
    {
        return weeklyHours;
    }

    public void setSemester(Long semester)
    {
        this.semester = semester;
    }

    public Long getSemester()
    {
        return semester;
    }

    public void setTermSeason(Long termSeason)
    {
        this.termSeason = termSeason;
    }

    public Long getTermSeason()
    {
        return termSeason;
    }

    public void setIsCrossSemester(Integer isCrossSemester)
    {
        this.isCrossSemester = isCrossSemester;
    }

    public Integer getIsCrossSemester()
    {
        return isCrossSemester;
    }

    public void setCrossSemesterCount(Long crossSemesterCount)
    {
        this.crossSemesterCount = crossSemesterCount;
    }

    public Long getCrossSemesterCount()
    {
        return crossSemesterCount;
    }

    public void setCourseNature(Long courseNature)
    {
        this.courseNature = courseNature;
    }

    public Long getCourseNature()
    {
        return courseNature;
    }

    public void setCourseLevel(Long courseLevel)
    {
        this.courseLevel = courseLevel;
    }

    public Long getCourseLevel()
    {
        return courseLevel;
    }

    public void setGradeType(Long gradeType)
    {
        this.gradeType = gradeType;
    }

    public Long getGradeType()
    {
        return gradeType;
    }

    public void setCourseType(Long courseType)
    {
        this.courseType = courseType;
    }

    public Long getCourseType()
    {
        return courseType;
    }

    public void setCourseClassification(Long courseClassification)
    {
        this.courseClassification = courseClassification;
    }

    public Long getCourseClassification()
    {
        return courseClassification;
    }

    public void setCourseClassification1(Long courseClassification1)
    {
        this.courseClassification1 = courseClassification1;
    }

    public Long getCourseClassification1()
    {
        return courseClassification1;
    }

    public void setCourseClassification2(Long courseClassification2)
    {
        this.courseClassification2 = courseClassification2;
    }

    public Long getCourseClassification2()
    {
        return courseClassification2;
    }

    public void setTeachingMethod(Long teachingMethod)
    {
        this.teachingMethod = teachingMethod;
    }

    public Long getTeachingMethod()
    {
        return teachingMethod;
    }

    public void setExaminationMethod(Long examinationMethod)
    {
        this.examinationMethod = examinationMethod;
    }

    public Long getExaminationMethod()
    {
        return examinationMethod;
    }

    public void setCourseCategory(Long courseCategory)
    {
        this.courseCategory = courseCategory;
    }

    public Long getCourseCategory()
    {
        return courseCategory;
    }

    public void setMajorCode(String majorCode)
    {
        this.majorCode = majorCode;
    }

    public String getMajorCode()
    {
        return majorCode;
    }

    public void setPrerequisiteCourses(String prerequisiteCourses)
    {
        this.prerequisiteCourses = prerequisiteCourses;
    }

    public String getPrerequisiteCourses()
    {
        return prerequisiteCourses;
    }

    public void setClassroomType(Long classroomType)
    {
        this.classroomType = classroomType;
    }

    public Long getClassroomType()
    {
        return classroomType;
    }

    public void setReferences(String references)
    {
        this.references = references;
    }

    public String getReferences()
    {
        return references;
    }

    public void setCourseIntroduction(String courseIntroduction)
    {
        this.courseIntroduction = courseIntroduction;
    }

    public String getCourseIntroduction()
    {
        return courseIntroduction;
    }

    public void setTeachingLanguage(Long teachingLanguage)
    {
        this.teachingLanguage = teachingLanguage;
    }

    public Long getTeachingLanguage()
    {
        return teachingLanguage;
    }

    public void setCourseIntroductionEn(String courseIntroductionEn)
    {
        this.courseIntroductionEn = courseIntroductionEn;
    }

    public String getCourseIntroductionEn()
    {
        return courseIntroductionEn;
    }

    public void setTeacher1Id(String teacher1Id)
    {
        this.teacher1Id = teacher1Id;
    }

    public String getTeacher1Id()
    {
        return teacher1Id;
    }

    public void setTeacher2Id(String teacher2Id)
    {
        this.teacher2Id = teacher2Id;
    }

    public String getTeacher2Id()
    {
        return teacher2Id;
    }

    public void setTeacher1Name(String teacher1Name)
    {
        this.teacher1Name = teacher1Name;
    }

    public String getTeacher1Name()
    {
        return teacher1Name;
    }

    public void setTeacher2Name(String teacher2Name)
    {
        this.teacher2Name = teacher2Name;
    }

    public String getTeacher2Name()
    {
        return teacher2Name;
    }

    public void setTextbook(String textbook)
    {
        this.textbook = textbook;
    }

    public String getTextbook()
    {
        return textbook;
    }

    public void setReferenceBooks(String referenceBooks)
    {
        this.referenceBooks = referenceBooks;
    }

    public String getReferenceBooks()
    {
        return referenceBooks;
    }

    public void setTeachingArrangement(String teachingArrangement)
    {
        this.teachingArrangement = teachingArrangement;
    }

    public String getTeachingArrangement()
    {
        return teachingArrangement;
    }

    public void setCourseOutline(String courseOutline)
    {
        this.courseOutline = courseOutline;
    }

    public String getCourseOutline()
    {
        return courseOutline;
    }

    public void setApplicableMajors(String applicableMajors)
    {
        this.applicableMajors = applicableMajors;
    }

    public String getApplicableMajors()
    {
        return applicableMajors;
    }

    public void setExtField1(String extField1)
    {
        this.extField1 = extField1;
    }

    public String getExtField1()
    {
        return extField1;
    }

    public void setExtField2(String extField2)
    {
        this.extField2 = extField2;
    }

    public String getExtField2()
    {
        return extField2;
    }

    public void setExtField3(String extField3)
    {
        this.extField3 = extField3;
    }

    public String getExtField3()
    {
        return extField3;
    }

    public void setExtField4(String extField4)
    {
        this.extField4 = extField4;
    }

    public String getExtField4()
    {
        return extField4;
    }

    public void setExtField5(String extField5)
    {
        this.extField5 = extField5;
    }

    public String getExtField5()
    {
        return extField5;
    }

    public void setStatus(Long status)
    {
        this.status = status;
    }

    public Long getStatus()
    {
        return status;
    }

    public void setApproverStatus(Long approverStatus)
    {
        this.approverStatus = approverStatus;
    }

    public Long getApproverStatus()
    {
        return approverStatus;
    }

    public void setIsScoreFixed(Integer isScoreFixed)
    {
        this.isScoreFixed = isScoreFixed;
    }

    public Integer getIsScoreFixed()
    {
        return isScoreFixed;
    }

    public void setCreateTime(Date createTime)
    {
        this.createTime = createTime;
    }

    public Date getCreateTime()
    {
        return createTime;
    }

    public void setRemark(String remark)
    {
        this.remark = remark;
    }

    public String getRemark()
    {
        return remark;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("courseCode", getCourseCode())
                .append("courseName", getCourseName())
                .append("courseShortName", getCourseShortName())
                .append("coursePinyin", getCoursePinyin())
                .append("courseNameEn", getCourseNameEn())
                .append("collegeId", getCollegeId())
                .append("departmentId", getDepartmentId())
                .append("applicableDepartments", getApplicableDepartments())
                .append("credits", getCredits())
                .append("totalHours", getTotalHours())
                .append("classroomHours", getClassroomHours())
                .append("labHours", getLabHours())
                .append("selfStudyHours", getSelfStudyHours())
                .append("weeklyHours", getWeeklyHours())
                .append("semester", getSemester())
                .append("termSeason", getTermSeason())
                .append("isCrossSemester", getIsCrossSemester())
                .append("crossSemesterCount", getCrossSemesterCount())
                .append("courseNature", getCourseNature())
                .append("courseLevel", getCourseLevel())
                .append("gradeType", getGradeType())
                .append("courseType", getCourseType())
                .append("courseClassification", getCourseClassification())
                .append("courseClassification1", getCourseClassification1())
                .append("courseClassification2", getCourseClassification2())
                .append("teachingMethod", getTeachingMethod())
                .append("examinationMethod", getExaminationMethod())
                .append("courseCategory", getCourseCategory())
                .append("majorCode", getMajorCode())
                .append("prerequisiteCourses", getPrerequisiteCourses())
                .append("classroomType", getClassroomType())
                .append("references", getReferences())
                .append("courseIntroduction", getCourseIntroduction())
                .append("teachingLanguage", getTeachingLanguage())
                .append("courseIntroductionEn", getCourseIntroductionEn())
                .append("teacher1Id", getTeacher1Id())
                .append("teacher2Id", getTeacher2Id())
                .append("teacher1Name", getTeacher1Name())
                .append("teacher2Name", getTeacher2Name())
                .append("textbook", getTextbook())
                .append("referenceBooks", getReferenceBooks())
                .append("teachingArrangement", getTeachingArrangement())
                .append("courseOutline", getCourseOutline())
                .append("applicableMajors", getApplicableMajors())
                .append("extField1", getExtField1())
                .append("extField2", getExtField2())
                .append("extField3", getExtField3())
                .append("extField4", getExtField4())
                .append("extField5", getExtField5())
                .append("status", getStatus())
                .append("approverStatus", getApproverStatus())
                .append("isScoreFixed", getIsScoreFixed())
                .append("createTime", getCreateTime())
                .append("remark", getRemark())
                .toString();
    }
}